package com.service.atf.adder.common;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * User: luotao
 * Date: 12-3-5
 * Time: 19:06:00
 */
public class ObjectFactoryAdder {
    public static final ObjectFactoryAdder FACTORY_ADDER = new ObjectFactoryAdder();

    public Map<String, List> objectCacheMap = new HashMap<String, List>();

    public static ObjectFactoryAdder getInstants() {
        return FACTORY_ADDER;
    }

//  public void init(XmlWapper wapper){
//    XmlWapper sckserver=wapper.getNode("sckserver");
//    String counts=sckserver.getString("@tdcount");
//    String[] infos=counts.split(":");
//    int threadTotal=Integer.parseInt(infos[1]);
//    List<BussLogout> logoutList=new ArrayList<BussLogout>(threadTotal);
//    objectCacheMap.put(BussLogout.class.getSimpleName(), logoutList);
//    initObjects(logoutList, BussLogout.class, threadTotal);
//
//    List<BussLogin> loginList=new ArrayList<BussLogin>(threadTotal);
//    objectCacheMap.put(BussLogin.class.getSimpleName(), loginList);
//    initObjects(loginList, BussLogin.class, threadTotal);
//
//    List<BussReg> regList=new ArrayList<BussReg>(threadTotal);
//    objectCacheMap.put(BussReg.class.getSimpleName(), regList);
//    initObjects(regList, BussReg.class, threadTotal);
//
//    List<BussGameEnter> gameEnterList=new ArrayList<BussGameEnter>(threadTotal);
//    objectCacheMap.put(BussGameEnter.class.getSimpleName(), gameEnterList);
//    initObjects(gameEnterList, BussGameEnter.class, threadTotal);
//
//    List<BussGameExit> gameExitList=new ArrayList<BussGameExit>(threadTotal);
//    objectCacheMap.put(BussGameExit.class.getSimpleName(), gameExitList);
//    initObjects(gameExitList, BussGameExit.class, threadTotal);
//
//    List<BussGameComplate> gameComplateList=new ArrayList<BussGameComplate>(threadTotal);
//    objectCacheMap.put(BussGameComplate.class.getSimpleName(), gameComplateList);
//    initObjects(gameComplateList, BussGameComplate.class, threadTotal);
//
//    List<BussTrade> tradeList=new ArrayList<BussTrade>(threadTotal);
//    objectCacheMap.put(BussTrade.class.getSimpleName(), tradeList);
//    initObjects(tradeList, BussTrade.class, threadTotal);
//
//    List<BussCharge> chargeList=new ArrayList<BussCharge>(threadTotal);
//    objectCacheMap.put(BussCharge.class.getSimpleName(), chargeList);
//    initObjects(chargeList, BussCharge.class, threadTotal);
//
//    List<BussDraw> drawList=new ArrayList<BussDraw>(threadTotal);
//    objectCacheMap.put(BussDraw.class.getSimpleName(), drawList);
//    initObjects(drawList, BussDraw.class, threadTotal);
//
//    List<BussBingo> bingoList=new ArrayList<BussBingo>(threadTotal);
//    objectCacheMap.put(BussBingo.class.getSimpleName(), bingoList);
//    initObjects(bingoList, BussBingo.class, threadTotal);
//
//    List<BussRefund> refundList=new ArrayList<BussRefund>(threadTotal);
//    objectCacheMap.put(BussRefund.class.getSimpleName(), refundList);
//    initObjects(refundList, BussRefund.class, threadTotal);
//
//
//    List<BussAccount> accountList = new ArrayList<BussAccount>(threadTotal);
//    objectCacheMap.put(BussAccount.class.getSimpleName(), accountList);
//    initObjects(accountList, BussAccount.class, threadTotal);
//
//    List<BussUserDelete> userDeleteList = new ArrayList<BussUserDelete>(threadTotal);
//    objectCacheMap.put(BussUserDelete.class.getSimpleName(), userDeleteList);
//    initObjects(userDeleteList, BussUserDelete.class, threadTotal);
//
//  }
//
//  private void initObjects(List list, Class clz, int threadTotal){
//
//    try{
//      Object obj=clz.newInstance();
//      for(int i=0;i<threadTotal;i++){
//        list.add(obj);
//      }
//    }
//    catch(Exception e){
//      e.printStackTrace();
//      String msg="���󻺴���ڳ�ʼ�� "+clz.getName()+"ʱ�������";
//      ATFLogger.syserr(msg);
//      throw new RuntimeException(msg);
//    }
//  }
//
//
//  public <T> T getObject(Class clz){
//    List<T> list=objectCacheMap.get(clz.getSimpleName());
//    if(list.size()<=0){
//      //��ǰ�����еĶ�����
//      String msg = "��ǰ�����е�"+clz.getName()+"������";
//      ATFLogger.syserr(msg);
//      throw new TFException(GlobalErrors.ATF_OBJ_CACHE_NULL,msg);
//    }
//    T t=list.remove(0);
//    if(t==null){
//      return null;
//    }
//    return t;
//  }

    public <T> void releaseObject(T t) {
//    if(t==null){
//      return;
//    }
//    List list = objectCacheMap.get(t.getClass().getSimpleName());
//    if(list==null){
//      ATFLogger.syserr("û���ҵ�"+t.getClass()+"�Ļ���");
//      return;
//    }
//    list.add(t);
    }
}
